package com.uade.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Compra implements Serializable,Valuable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6055092950387687336L;
	private long id;
	private String idModulo;
	private double coordenadaX;
	private double coordenadaY;
	private String fecha;
	private Usuario usuario;
	private List<ItemCompra> items = new ArrayList<ItemCompra>();
	private double montoTotal;
	private String estado;

	
	public Compra() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Compra(long id, String idModulo, double coordenadaX,
			double coordenadaY, String fecha, Usuario usuario,
			List<ItemCompra> items, double montoTotal, String estado) {
		super();
		this.id = id;
		this.idModulo = idModulo;
		this.coordenadaX = coordenadaX;
		this.coordenadaY = coordenadaY;
		this.fecha = fecha;
		this.usuario = usuario;
		this.items = items;
		this.montoTotal = montoTotal;
		this.estado = estado;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getIdModulo() {
		return idModulo;
	}

	public void setIdModulo(String idModulo) {
		this.idModulo = idModulo;
	}

	public double getCoordenadaX() {
		return coordenadaX;
	}

	public void setCoordenadaX(double coordenadaX) {
		this.coordenadaX = coordenadaX;
	}

	public double getCoordenadaY() {
		return coordenadaY;
	}

	public void setCoordenadaY(double coordenadaY) {
		this.coordenadaY = coordenadaY;
	}

	public String getFecha() {
		return fecha;
	}

	public void setFecha(String fecha) {
		this.fecha = fecha;
	}

	public List<ItemCompra> getItems() {
		return items;
	}

	public void setItems(List<ItemCompra> items) {
		this.items = items;
	}

	public double getPrecio() {
		this.montoTotal = 0.0;
		if (null != this.items && !this.items.isEmpty()) {

			for (ItemCompra itemVenta : this.items) {
				this.montoTotal += itemVenta.getPrecio();
			}

		}
		return this.montoTotal;
	}
	/**
	 * Retorna el string xml de la venta con los datos de la compra
	 * @return
	 */
	public String getXmlVenta(){

		StringBuffer xml =new StringBuffer();
		//Se agrega el header
		xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> ");
		xml.append("<venta>");
			xml.append("<nroVenta>"+String.valueOf(getId())+"</nroVenta>"); 
			xml.append("<idModulo>4</idModulo>"); 
			xml.append("<coordenadaX>"+String.valueOf(getCoordenadaX())+"</coordenadaX>"); 
			xml.append("<coordenadaY>"+String.valueOf(getCoordenadaY())+"</coordenadaY>"); 
			xml.append("<fecha>"+getFecha()+"</fecha>");
			xml.append("<montoTotal>"+String.valueOf(getPrecio())+"</montoTotal>");
			//Items
			xml.append("<itemsVenta>");
				for(ItemCompra item : getItems()){
					xml.append("<item>");
						xml.append("<codigoArticulo>"+String.valueOf(item.getArticulo().getIdProducto())+"</codigoArticulo>");
						xml.append("<cantidad>"+String.valueOf(item.getCantidad())+"</cantidad>");
					xml.append("</item>");
				}
			xml.append("</itemsVenta>");
		xml.append("</venta>");
		
		return xml.toString();
		
	}
}
